Applications that operate against an offline server, and reconnect with an online server must synchronize data between the offline server and the online server, e.g., to account for any changes in data that occurred while operating against the offline server. Data or record level synchronization transfers data from the offline database directly to the online database when the application reconnects with the online server. The direct data transfer from the offline database to the online database may lead to unrecognized and/or irreparable conflicts during the synchronization process. For example, an offline command may produce a new record in the offline database. However, in the context of the online database the command may not be allowed or valid. For example, the user may not have the required privileges to execute the command. Thus, transferring the data produced or modified by the command directly from one database to the other would lead to a conflict in the target database.
One synchronization scheme that seeks to avoid the problems associated with data or record level synchronization is a command replay synchronization scheme. In a command synchronization scheme the command executed against the offline server may be stored and then replayed against the online server when the application reconnects to the online server. However, commands that are executed against the offline server may not execute in the same manner against the online server. For example, an offline command may include references to objects in the offline system that do not exist in the same context in the online server. Additionally, the online server may behave differently than the offline server when executing a command. The difference in behavior may cause a portion of the remaining commands to have invalid references that may cause the portion of the remaining commands to fail.